package docker

// docker service 自动拥有扩缩容的功能

/*


	service 自动拥有扩缩容的功能

	docker service --help

	root@VM-4-8-debian:/#  docker service --help
	Usage:  docker service COMMAND

	Manage services

	Commands:

	create      Create a new service									##	创建一个服务
	inspect     Display detailed information on one or more services	##查看信息
	logs        Fetch the logs of a service or task						##查看日志
	ls          List services
	ps          List the tasks of one or more services
	rm          Remove one or more services
	rollback    Revert changes to a service's configuration				##回滚
	scale       Scale one or multiple replicated services				##动态的扩缩容/扩展
	update      Update a service										##动态更新一个服务
	Run 'docker service COMMAND --help' for more information on a command.




		灰度发布：金丝雀发布
	      升级网站且不影响网站使用

		docker service create --help

		创建一个服务，类似docker run 结合 --help
		docker service create -p 8080:80 --name my-nignx nignx

		docker run 容器启动，不具有扩缩容器
		docker service 服务，具有扩缩容器，滚动更新

		docker service ps my-nginx

		docker service ls 查看服务列表

		在三个主服务上，使用命令查找，刚刚是在docker-1创建的服务器，
		docker service ls     REPLICAS 1/1 副本
		可能发现刚刚创建的服务并不一定在docker-1上，这就是随机分布的特点

		现在容器只启动了一个，只有一个副本，现在来到状况，前端访问人数爆增，一个副本压力太大
		一个服务扛不住，现在需要多开几个容器，动态的扩缩容

		更新
		docker service update --help

		//创建副本 创建三个my-nignx副本
		docker service update --replicas 3 my-nignx

		创建成功，然后在4个节点上，使用docker  ps
		可以在这个集群中任意一个节点随机的分布我们的项目
		现在在浏览器上，随便用docker-1-4服务器的ip地址:8080

		在docker-1-4中使用docker ps 查看启动的容器
		使用docker ps 在docker-1-4查看
		最后发现docekr-1中并没有启动my-nginx容器
		复制docker-1服务器的ip地址:8888
		在浏览器中打开
		虽然在docker-1这台服务上并没有启动容器my-nginx，但是浏览器通过该服务器的ip还是访问到了
		只有在这个集群里面，无论使用哪个服务器的ip都可以访问到

		所以，集群就是一个整体
		服务集群中的任意节点都可以访问，服务有多个副本动态扩缩容，实现高可用

		变回一个
		docker service update --replicas 1 my-nignx


		//扩缩容还有一个命令
		docke service scale --help
		docker service scale my-niginx=5


		//删除服务
		docker service rm my-niginx


		//服务副本与全局服务
		刚才创建副本是随机分配的
		我们的manager和worker节点都可以跑项目
		但是我们的项目可以分为两个
		一个是能在全局跑的
			global service with replicas on every node
		一个是只能在副本上跑的
			replicated service with 3 replicas

		如果我的工作节点不想它跑东西，可以让它以工作副本的

		调整service以什么方式运行
		--mode string
		    service mode (replicated or global) default "replicated"

		docker service create --mode replicated --name mysql01 mysql
		docker service create --mode global --name mysql01 mysql






*/
